草庐IT

MySQL Workbench 符号引用

全部标签

c++ - 将枚举传递给函数 - 按值还是按引用?

这个问题在这里已经有了答案:C++:Isitbettertopassanenumasavalueorasaconstreference?(5个答案)关闭6年前。如果我错了请纠正我,但是你按值传递整数和其他基本数据类型的原因是因为它们占用的内存太小,所以制作该数据类型的指针变量是一种浪费(这将可能至少与数据类型的大小相同)。这就是为什么我总是按值将int和其他基本类型传递给函数,而其他(更大的)数据类型通过const引用或const指针传递。我没看错吗?现在我看到许多API将enum类型作为const引用传递,如下所示:enumFileOptions{ReadOnly,ReadWrite

c++ - 在模板中引用模板化函数

我希望能够为模板中的模板化函数命名。由于可以使用“模板模板”语法命名模板类,并且可以使用“函数指针”语法命名函数,所以我想知道是否有命名函数的语法(或提案)在模板中而不指定模板。templatestructA{t_typevalue;};templateclasst_type>structB{t_typevalue;};templateconstexprintC(intvalue){returnvalue+added;}templateconstexprintD(intvalue){returnfunction(value);}//GOAL:Templateargumentreferr

c++ - 引用类型静态数据成员的问题,可能是编译器错误

我想一个类的静态数据成员可以是一个初始化为全局变量的引用类型,如下所示:#include#includeconstunsignedintglobal=0x1fee;structK{inta;staticconstint&iref;};constint&K::iref=global;intmain(){printf("%d\n",K::iref);return0;}但在我的VC++中test,它可以编译但在执行时会产生异常。这只是VC++的一个错误吗?我做错了什么吗? 最佳答案 你只需要机会constint&k::iref到k::ir

c++ - 如何使用 msgfmt 验证格式字符串中的位置符号占位符?

在翻译文本中使用类似printf的格式字符串时,msgfmt--check检查翻译是否仍然包含占位符。例如,在以下代码上运行xgettextprintf(gettext("string:%s,int:%d"),str,i)生成一个.po文件,其中msgid标记为c-format并且其值为"string:%s,整数:%d"。如果翻译者在翻译中忘记了%s或%d,则msgfmt会提示:numberofformatspecificationsin'msgid'and'msgstr'doesnotmatch不幸的是,此检查不适用于使用位置符号的格式字符串,例如boost::format(gett

c++ - 引用是否有存储位置?

引用是否有存储位置,或者它只是另一个位置的别名?这是否因C++版本而异,还是与所有C++版本一致?如果一个引用有一个存储位置,那么它是否只允许像类型这样的指针上的值语义?当您这样使用引用时,它是如何工作的:structaStruct{intaVariable;aClass&aReferencetoaClass;};是占空间还是别名? 最佳答案 latestC++20spec(§9.2.3.3)并且至少自C++2005draftspec以来状态:Itisunspecifiedwhetherornotareferencerequires

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

什么是undefinedreference/未解析的外部符号错误?常见原因是什么以及如何修复/预防它们? 最佳答案 编译C++程序需要几个步骤,如2.2(creditstoKeithThompsonforthereference)所指定的那样:Theprecedenceamongthesyntaxrulesoftranslationisspecifiedbythefollowingphases[seefootnote].Physicalsourcefilecharactersaremapped,inanimplementation-

c++ - 关于将 const 引用绑定(bind)到临时对象的子对象

代码如下#includestructP2d{doublex,y;P2d(doublex,doubley):x(x),y(y){}~P2d(){printf("Destructorcalled\n");}};P2dcenter(){returnP2d(10,10);}intmain(intargc,constchar*argv[]){constdouble&x=center().x;printf("x=%.18g\n",x);return0;}g++(版本5.2.0)将在中输入printf之前销毁P2d临时实例main,但该值无论如何都会被保留(即,不是将x绑定(bind)到临时P2d实

c++ - 在 C++ 中创建对三元运算符结果的 const 引用是否安全?

这段代码中发生了一些不明显的事情:floata=1.;constfloat&x=true?a:2.;//Note:`2.`isadoublea=4.;std::coutclang和gcc输出:4,1人们会天真地期望相同的值被打印两次,但事实并非如此。这里的问题与引用无关。有一些有趣的规则规定了的类型?:。如果两个参数的类型不同并且可以转换,则它们将使用临时对象。引用将指向的临时值?:。上面的示例编译正常,并且在使用-Wall编译时可能会或可能不会发出警告,具体取决于您的编译器版本。下面是一个例子,说明在看起来合法的代码中出错是多么容易:templateconstT&min(constI

c++ - 将函数标识符作为右值引用传递并对其应用 std::move()

考虑以下片段#include#includeusingcallback=std::function;doublesum(doublea,doubleb){returna+b;}intmain(intargc,char*argv[]){//Shouldn'tthisleavesum()inaninvalidstate?autoc=std::move(sum);std::cout我正在将sum转换为右值引用,将其存储在c中,并在没有明显错误行为的情况下调用这两个函数。这是为什么?std::move不应该让sum处于无效状态吗? 最佳答案

c++ - VC9 C++ 语言扩展引用

是否有关于VC9(SP1)编译器具有的所有C++扩展的引用?示例是__declspec东西、可变参数宏和编译器内在函数,尽管还有一些不太引人注目的东西,比如能够在类范围内拥有模板函数特化,而显然标准说它们不能(PreviousQuestion).这包括支持的C99、TR1、C++0X等的任何部分。有关VC10的信息也很有用,我知道它包含C++0X的某些部分,但还有什么?我在MSDN上找到了零零碎碎的东西,但没有真正的列表,除非我知道扩展的名称,或者至少知道足够的相关信息(即它的作用),否则它是不可能的。 最佳答案 VisualStu